# 这个装饰器可以用来检查用户是否有足够的权限执行某个操作。

def permission_required(permission):
    def decorator(original_function):
        def wrapper_function(*args, **kwargs):
            if has_permission(permission):
                return original_function(*args, **kwargs)
            else:
                # 装饰器内部使用了 raise 关键字来抛出异常，以便在特定条件下阻止函数继续执行。
                raise PermissionError("没有操作权限")

        return wrapper_function

    return decorator


def has_permission(user_role):
    user_roles = ['admin', 'root']
    if user_role in user_roles:
        return True
    else:
        return False


@permission_required("admin")
def do_something(resource_id):
    # 有权限操作
    print(f"您有操作【{resource_id}】 的权限")

if __name__ == '__main__':
    do_something('查看用户交易记录')

